/*
 * Copyright 2004-2005 公司名
 * 本软件及其所有拷贝的名称，与光盘上或本软件中注明的公司同在。
 * 本软件及文档享有版权，并受国家版权法及国际协约条款的保护。
 * 您不可以从本软件中去掉其版权声明；并保证为本软件的拷贝（本部或部分）* 复制版权声明。
 * 您同意制止以任何形式非法拷贝本软件及文档。
 * 版权信息参见：
 *      http://www.companyname.cn/licenses
 */

package com.companyname.common.base.web.service;

import java.sql.Timestamp;

import javax.servlet.http.HttpServletRequest;

import org.apache.log4j.Logger;

import com.companyname.common.base.manager.Manager;
import com.companyname.common.base.model.BaseObject;
import com.companyname.common.sysframe.define.SysFrameParams;
import com.companyname.common.sysframe.manager.OrgManager;
import com.companyname.common.sysframe.manager.PostManager;
import com.companyname.common.sysframe.manager.RoleManager;
import com.companyname.common.sysframe.manager.UserManager;
import com.companyname.common.sysframe.model.User;

/**
 * 服务模板
 *
 */

public abstract class TempletService implements AbstractService
{
        static Logger logger = Logger.getLogger(TempletService.class);

        protected Manager manager;
        
        protected UserManager userManager;

        protected RoleManager roleManager;

        protected PostManager postManager;

        protected OrgManager orgManager;

        public void setManager(Manager manager)
        {
                this.manager = manager;
        }
        
        /**
         * @param orgManager 要设置的 orgManager。
         */
        public void setOrgManager(OrgManager orgManager)
        {
                this.orgManager = orgManager;
        }

        /**
         * @param postManager 要设置的 postManager。
         */
        public void setPostManager(PostManager postManager)
        {
                this.postManager = postManager;
        }

        /**
         * @param roleManager 要设置的 roleManager。
         */
        public void setRoleManager(RoleManager roleManager)
        {
                this.roleManager = roleManager;
        }

        /**
         * @param userManager 要设置的 userManager。
         */
        public void setUserManager(UserManager userManager)
        {
                this.userManager = userManager;
        }
        
        public User getCurrUser(HttpServletRequest request)
        {
                return (User)this.userManager.get((String)request.getSession().getAttribute(SysFrameParams.CURRENT_USER_ID));
        }

        protected void iniUserInforIntoNewBO(HttpServletRequest request,BaseObject bo)
        {
                logger.info("初始化当前操作者信息入bo(for save)");
                // 创建者
                User currUser = this.getCurrUser(request);
                bo.setCreator(currUser);
                bo.setCreateTime(new Timestamp(System.currentTimeMillis()));
                bo.setCreateOrg(currUser.getFirstOrg());
                // 最后修改者
                this.iniUserInforIntoOldBO(request,bo);
        }

        protected void iniUserInforIntoOldBO(HttpServletRequest request,BaseObject bo)
        {
                logger.info("初始化当前操作者信息入bo(for update)");
                User currUser = this.getCurrUser(request);
                // 最后修改者
                bo.setLastUpdator(currUser);
                bo.setLastUpdateTime(new Timestamp(System.currentTimeMillis()));
                bo.setLastUpdateOrg(currUser.getFirstOrg());
        }
}
